A wide variety of resources are made available over networks, such as the Internet. Each of these resources may provide an interface that specifies the operations performed by the resource and the parameters used to perform the operations. Application or application developers that wish to access or use a service provided by a resource need to obtain the resource interface in order to use and access the resource.
One popular method used to making resources available to others is through web services. A web service is a collection of one or more operations which are published and made available on the Internet. A description of the public interface to the web service is generally provided in a Web Services Description Language (WSDL) document, which describes the operations provided by the web service, the input parameters used by the web service, and output parameters which may be returned by an operation. A resource may publish its interface in a WSDL document using a Universal Description Discovery and Integration (UDDI) register.
Other prior art approaches to interoperability of services provided by resources are also used. For instance, the Parlay framework (http://www.parlay.org) specifies a centralized framework for discovering and supporting service enablers. Upon authentication of a requestor, a service enabler is instantiated and made available to the requestor. However, the framework was developed prior to and independently from web services and therefore it does not, for example, cater for providing the Parlay framework functionality to generic web services. The Parlay framework is fundamentally a session-based approach where services are instantiated upon request and then protected by hiding its address for the duration of the instantiation. Further, Parlay requires skilled developers to use an IIOP framework or a CORBA architecture and develop appropriate interfaces for each service enabler or service. Composing such interfaces is not simple, thus the adoption of this approach for determining the availability and the enforceability of supporting functions is limited.
Prior art approaches do not contemplate independent service function composition, combination, aggregation, choreography, or coordination in any way that would allow a resource provider to control and manage efficiently the way that it exposes its resource to other parties in a way that can be automated, where the requestor can determine the conditions that it must satisfy to access and use the enabler or the services and can satisfy them. Further, the existing approaches do not contemplate the service provider validating that these conditions as well as any additional conditions internally imposed and not exposed to the requestor, have been satisfied.